Request bodyのアップロード問題
制約の多いウェブサイトから、大きめのファイルをプロキシサーバーにアップロードするためにはどうすればよいか?
要素のsrcやhref属性に埋め込むアプローチが一番汎用的…?
画像以外の要素で通信することも考えた場合はurlによる手法が一番汎用的っぽい
画像の他にlink,media,iframeなどいろいろある
URLの長さにはサーバーごとに限界があるので、URLはなるべく短いのが望ましい
これ以外を用いるとエンコーディングされてしまい、2バイトに3文字必要になってURLがめちゃくちゃ長くなってしまう
256の3乗根より、エンコードされてしまった部分はだいたい6種類の文字だけで表したのと同じぐらいの計算になる
対数計算により、71種類すべて利用する場合と比べて長さはおよそ1.02倍になることがわかる
許容範囲っぽい
srcに埋め込む方式では、一回のリクエストでせいぜい10kbしか送れない
それ以上のデータは複数のURLに分割して送信することが考えられる
base64を利用するならさらにその75%しか送れない
一回のリクエストを超える場合は少なくとも圧縮を利用すべき
他には、例えばscrapboxではgyazoに画像としてアップロードし、そのurlを送信するという手法が考えられる
サイトそれぞれに許容されるAPIが全く異なることが容易に想像されるので、Scrapbox以外での利用を想定するならあまり魅力的でない